import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']  # 使用支持中文的字体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

# 读取Excel文件
df = pd.read_excel('/Users/wunanzhu/next-group-new/project/练习一/FhjlViewDD.xlsx')

# 转换日期格式
df['创建时间'] = pd.to_datetime(df['创建时间'])

# 筛选6月份数据
june_data = df[df['创建时间'].dt.month == 6]

# 筛选矿粉数据
mining_data = june_data[june_data['货品'].str.contains('矿粉')]

# a. 统计6月份每日矿粉货运量的日趋势
mining_daily = mining_data.groupby(mining_data['创建时间'].dt.day)['净重'].sum()
# 矿粉货运量图表
plt.figure(figsize=(12, 6))
mining_daily.plot(kind='bar')
plt.title('6月份每日矿粉货运量统计', fontsize=14, pad=20)
plt.xlabel('日期(日)', fontsize=12, labelpad=10)
plt.ylabel('货运量(吨)', fontsize=12, labelpad=10)
plt.xticks(fontsize=10)
plt.yticks(fontsize=10)
for i, v in enumerate(mining_daily):
    plt.text(i, v+10, str(v), ha='center', fontsize=8)
plt.tight_layout()
plt.savefig('mining_daily_stats.png')
plt.close()

# b. 统计6月份每日水泥货运量的日趋势
cement_data = june_data[june_data['货品'].str.contains('水泥')]
cement_daily = cement_data.groupby(cement_data['创建时间'].dt.day)['净重'].sum()
plt.figure(figsize=(12, 6))
cement_daily.plot(kind='bar')
plt.title('6月份每日水泥货运量统计', fontsize=14, pad=20)
plt.xlabel('日期(日)', fontsize=12, labelpad=10)
plt.ylabel('货运量(吨)', fontsize=12, labelpad=10)
plt.xticks(fontsize=10)
plt.yticks(fontsize=10)
for i, v in enumerate(cement_daily):
    plt.text(i, v+10, str(v), ha='center', fontsize=8)
plt.tight_layout()
plt.savefig('cement_daily_stats.png')
plt.close()

# c. 统计每个客户的6月份货运需求量
customer_demand = june_data.groupby('客户')['净重'].sum().sort_values(ascending=False)
print('客户货运需求量排名:')
print(customer_demand)

# d. 统计6月份各发货地的发货总量
shipping_location = june_data.groupby('发货地')['净重'].sum()
plt.figure(figsize=(12, 6))
shipping_location.plot(kind='pie', autopct='%1.1f%%', 
                     textprops={'fontsize':8}, 
                     pctdistance=0.85,
                     labeldistance=1.15,
                     wedgeprops={'linewidth': 1, 'edgecolor': 'white'},
                     radius=1.2)
plt.title('6月份各发货地发货量占比')
plt.ylabel('')
plt.tight_layout()
plt.savefig('shipping_location.png')
plt.close()

# e. 统计6月份各车牌号的总货运量
vehicle_stats = june_data.groupby('车辆')['净重'].sum().sort_values(ascending=False)
print('车牌号货运量排名:')
print(vehicle_stats)